package com.example.equipmentjava.xiaoxinyan.utils;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

public  class URLDecoderUtil {

    /**
     * 递归解码URL编码的字符串
     *
     * @param encodedStr URL编码的字符串
     * @param charset    字符集，例如 "UTF-8"
     * @return 解码后的字符串
     * @throws UnsupportedEncodingException 如果不支持指定的字符集
     */
    public static String recursiveDecode(String encodedStr, String charset) throws UnsupportedEncodingException {
        String decodedStr = URLDecoder.decode(encodedStr, charset);
        // 检查解码后的字符串是否仍然包含"%"，如果是，则继续解码
        if (decodedStr.contains("%")) {
            return recursiveDecode(decodedStr, charset);
        }
        return decodedStr;
    }

    /**
     * 便捷方法，使用UTF-8字符集解码
     *
     * @param encodedStr URL编码的字符串
     * @return 解码后的字符串
     * @throws UnsupportedEncodingException 如果不支持UTF-8字符集（理论上不会发生）
     */
    public static String decode(String encodedStr) throws UnsupportedEncodingException {
        return recursiveDecode(encodedStr, "UTF-8");
    }

    public static void main(String[] args) {
        try {
            String encodedStr = "%25E9%2582%2593%25E6%25B5%258B%25E8%25AF%259512"; // 示例编码字符串
            String decodedStr = decode(encodedStr);
            System.out.println("解码后的字符串: " + decodedStr); // 输出: 解码后的字符串: 测试
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
}
